package com.eastfair.auth.service;

import com.eastfair.auth.dto.OrganizationDTO;
import com.eastfair.auth.entity.Organization;
import com.eastfair.core.base.R;

/**
 * <p>
 * 资源-场内组织操作业务接口
 *
 * </p>
 *
 * @author ligang
 * @date 2022-05-27
 */
public interface RbookingOrganizationService {

    /**
     * 查询场内工作资源
     *
     * @param organizationDTO 实体
     *                        orgType 节点类型
     *                        resourceId 资源id
     *                        resourceType 资源类型
     * @return
     */
    Organization query(OrganizationDTO organizationDTO);


    /**
     * 创建场内工作组
     *
     * @param organizationDTO 实体
     *                        projectId 项目id
     *                        orgType 节点类型
     *                        name 节点名称
     *                        parentId 父级节点id
     *                        resourceId 资源id
     *                        resourceType 资源类型
     *                        List<Long> userIds 用户id
     *                        List<Long> roleIds 角色id
     * @return
     */
    R<Organization> create(OrganizationDTO organizationDTO);

    /**
     * 修改场内工作组
     *
     * @param organizationDTO 实体
     *                        projectId 项目id
     *                        orgId 主键id
     *                        name 节点名称
     *                        resourceId 资源id
     *                        resourceType 资源类型
     *                        List<Long> userIds 用户id
     *                        List<Long> roleIds 角色id
     * @return
     */
    R<Organization> upd(OrganizationDTO organizationDTO);

    /**
     * 修改场内工作组
     *
     * @param organizationDTO 实体
     *                        projectId 项目id
     *                        orgId 主键id
     * @return
     */
    R<Organization> del(OrganizationDTO organizationDTO);

    /**
     * 添加员工
     *
     * @param organizationDTO 实体
     *                        projectId 项目id
     *                        orgId 主键id
     *                        userIds 用户id
     *                        resourceId 资源id
     * @param isAdmin        是否管理员
     * @return
     */
    R addUser(OrganizationDTO organizationDTO, Integer isAdmin);


    /**
     * 解散员工
     *
     * @param organizationDTO 实体
     *                        projectId 项目id
     *                        orgId 主键id
     *                        userIds 用户id
     *                        resourceId 资源id
     * @return
     */
    R breakUser(OrganizationDTO organizationDTO);

}
